# -*- coding: latin-1 -*-

from tjango.listreport.report import *
import datetime
from dateutil.relativedelta import *
from models import *

class Cheques_en_cartera(Report):

	def select(self):
		return F('', items= [
				F('banco'),
				F('numero'),
				F('vencimiento'),
				F('importe'),
				])
				
	def query(self,form):
		q = ChequeDeTercero.objects.all()
		return q
			
	def condition(self, form, nivel, obj):
		return obj.en_cartera()



class Falta_descargar(Report):

	class ReportForm(forms.Form):
		meses_antiguedad = forms.IntegerField("Meses de antigüedad", required=False, initial=4)
                        
	def select(self):
		return F('', items= [
				F('productor'),
				F('compania'),
				F('descripcion_claves'),
				F('observaciones'),
				])
				
	def query(self,form):
		q = Compania_en_productor.objects.filter(estado="Descargar")
		if form.cleaned_data['meses_antiguedad']:
			desde = datetime.date.today() -relativedelta(months = form.cleaned_data['meses_antiguedad'])
			q = q.filter(solicitado__gt=desde)
		return q
			
#	def condition(self, form, nivel, obj):
#		return obj.estado == "Descargar"



class Falta_imprimir(Report):

	def select(self):
		return F('', items= [
				F('contacto'),
				])
				
	def query(self,form):
		self.producto = Producto.objects.get(nombre="Contenido")
		return Productor.objects.filter(contacto__facturas__cerrado=False, contacto__facturas__fecha_contratacion__isnull=False, contacto__facturas__items__producto=self.producto).distinct()

			
	def condition(self, form, nivel, obj):
		res = obj.get_ultima_impresion()==None 
		res = res and not obj.companias.exclude(estado="Ok")
		return res

class Falta_entregar(Report):

	def select(self):
		return F('', items= [
				F('contacto'),
				F('get_ultima_impresion'),
#				F('saldo'),
				])
				
	def query(self,form):
		self.entregar = Accion.objects.get(nombre="Entregar")
		self.producto = Producto.objects.get(nombre="Contenido")
		return Productor.objects.filter(contacto__facturas__cerrado=False, contacto__facturas__fecha_contratacion__isnull=False, contacto__facturas__items__producto=self.producto).distinct()
		#.exclude(contacto__facturas__items__acciones__accion=entregar)
			
	def condition(self, form, nivel, obj):
		res = obj.get_ultima_impresion()<>None and obj.contacto.facturas.exclude(items__acciones__accion=self.entregar).filter(fecha_contratacion__isnull=False,items__producto=self.producto)
		
		return res
